package com.draven.mall.service;

import com.draven.mall.entity.Order;
import com.draven.mall.entity.Rider;

/**
 * 调度服务接口
 */
public interface DispatchService {
    
    /**
     * 为订单分配骑手
     * 
     * @param orderId 订单ID
     * @return 分配的骑手ID，如果分配失败返回null
     */
    Long assignRider(Long orderId);
    
    /**
     * 使用当前激活的算法为订单分配骑手
     * 
     * @param order 订单
     * @return 分配的骑手，如果分配失败返回null
     */
    Rider assignRiderForOrder(Order order);
    
    /**
     * 使用指定的算法为订单分配骑手
     * 
     * @param order 订单
     * @param algorithmType 算法类型
     * @return 分配的骑手，如果分配失败返回null
     */
    Rider assignRiderWithAlgorithm(Order order, int algorithmType);
} 